Package org.python.pydev.debug.ui.actions

Source Code of org.python.pydev.debug.ui.actions.RestartLaunchAction

/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.debug.ui.actions;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.model.IProcess;
import org.eclipse.debug.internal.ui.views.console.ProcessConsole;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.bindings.keys.KeySequence;
import org.eclipse.ui.part.IPageBookViewPage;
import org.eclipse.ui.texteditor.IUpdate;
import org.python.pydev.core.log.Log;
import org.python.pydev.editor.actions.PyAction;
import org.python.pydev.plugin.PydevPlugin;
import org.python.pydev.ui.UIConstants;

import com.aptana.shared_core.bindings.KeyBindingHelper;


@SuppressWarnings("restriction")
public class RestartLaunchAction extends PyAction implements IUpdate {

    protected IPageBookViewPage page;
    protected ProcessConsole console;
    private final ILaunch launch;
    private final ILaunchConfiguration launchConfiguration;

    private static ILaunch lastLaunch;
    private static ILaunchConfiguration lastConfig;

    public RestartLaunchAction(IPageBookViewPage page, ProcessConsole console) {
        this.page = page;
        this.console = console;
        launch = this.console.getProcess().getLaunch();
        launchConfiguration = launch.getLaunchConfiguration();

        lastLaunch = launch;
        lastConfig = launch.getLaunchConfiguration();

        update();
    }

    /* (non-Javadoc)
     * @see org.eclipse.ui.texteditor.IUpdate#update()
     */
    public void update() {
        IProcess process = console.getProcess();
        setEnabled(true);
        KeySequence binding = KeyBindingHelper
                .getCommandKeyBinding("org.python.pydev.debug.ui.actions.relaunchLastAction");
        String str = binding != null ? "(" + binding.format() + " when on Pydev editor)" : "(unbinded)";
        if (process.canTerminate()) {
            this.setImageDescriptor(PydevPlugin.getImageCache().getDescriptor(UIConstants.RELAUNCH));
            this.setToolTipText("Restart the current launch. " + str);

        } else {
            this.setImageDescriptor(PydevPlugin.getImageCache().getDescriptor(UIConstants.RELAUNCH1));
            this.setToolTipText("Relaunch with the same configuration." + str);
        }
    }

    public static void relaunch(ILaunch launch, ILaunchConfiguration launchConfiguration) {
        if (launch != null && launchConfiguration != null) {
            try {
                launch.terminate();
            } catch (DebugException e) {
                Log.log(e);
            }
            try {
                launchConfiguration.launch(launch.getLaunchMode(), null);
            } catch (CoreException e) {
                Log.log(e);
            }
        }
    }

    public void run(IAction action) {
        relaunch(launch, launchConfiguration);
    }

    public void run() {
        run(this);
    }

    public void dispose() {
        this.page = null;
        this.console = null;
    }

    public static void relaunchLast() {
        relaunch(lastLaunch, lastConfig);
    }

}
TOP

Related Classes of org.python.pydev.debug.ui.actions.RestartLaunchAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.